草庐IT

Java Tomcat 启用缓存

全部标签

java - 在工厂类内部或外部有一个缓存机制更好吗?

我这里的问题与语言无关,它更像是一个通用的编程概念。如果我有一个Factory类,它有一个返回Parser对象的方法,我知道这些解析器类在每个迭代周期中不需要被实例化多次(当然是在工厂之外)。就使用和对象分离而言,最好在工厂内部为所有实例化的解析器创建缓存机制,即:在方法调用期间,或者在方法调用之外,当方法已经被调用时?提前致谢。 最佳答案 也许你可以为你的Factory定义一个接口(interface),然后有多个实现——一个实现可以在内部执行缓存以保证一个Parser类只被实例化一次.另一种实现可以不执行缓存,只要有需要就提供新

java - 如何将 () 值放入 Guava 的缓存类中?

我对CacheBuilder有点困惑和Cache在Guava10中引入。文档暗示可以overwritevalues但据我所知,Cache不包含任何这样做的方法。有什么想法吗?我正在尝试构建一个在上次读取或写入后10秒过期的映射。查找值时,我希望返回先前设置的值,或者如果不存在则计算默认值。注意:这个问题已经过时了。虽然上面的Javadoc显示了Cache.put(Kkey,Vvalue)方法的存在,但在问题首次发布时它并不存在。 最佳答案 长期以来,Cache#asMap返回一个ConcurrentMapView。据我所知,还没有。

java - 使用 Spring KeyGenerator 生成唯一的缓存 key 不起作用

当我的缓存键在Spring中使用@Cacheable注释发生冲突时,我遇到了问题。例如,使用以下两种方法:@Cacheable("doOneThing")publicvoiddoOneThing(Stringname){//dosomethingwithname}@Cacheable("doAnotherThing")publicvoiddoAnotherThing(Stringname){//dosomeotherthingwithname}这是我的缓存配置,我在其中添加了一个keyGenerator和一个cacheManagerbean:@Configuration@EnableC

java String hashcode缓存机制

查看Java的String类,我们可以看到哈希码在第一次评估后被缓存。publicinthashCode(){inth=hash;if(h==0&&value.length>0){charval[]=value;for(inti=0;i其中hash是一个实例变量。我有一个问题,为什么我们需要h额外变量? 最佳答案 仅仅是因为hash值在循环中发生变化,没有中间临时变量的解决方案不是线程安全的。考虑在多个线程中调用此方法。假设thread-1开始了hash计算并且它不再是0。片刻之后thread-2在同一对象上调用相同的方法hashC

应用引擎端点启用CORS

我在标准环境V2端点类中有一些方法。从Web客户端调用它们时,请调用第一个选项方法,以检查是否启用了CORS。响应是:HTTP/1.1200OKX-Cloud-Trace-Context:2a246f2e7f7ddbbf2afeaa71629da259;o=1Date:Wed,12Jul201713:47:20GMTExpires:Wed,12Jul201713:47:20GMTCache-Control:private,max-age=0X-Content-Type-Options:nosniffX-Frame-Options:SAMEORIGINX-XSS-Protection:1;mod

java - 二级缓存 vs 查询缓存 vs 集合缓存?

据我了解,当使用主键加载对象时,将使用二级缓存。这包括获取关联。我只能想到上面的session.get()、session.load方法,其中二级缓存将出现在图片中。如果关联是集合或其他一些实体,如何缓存它?例如:-@CacheablepublicclassDepartment{privateListEmployees;privateDepatmentDetaildetail;}如何使关联员工和详细信息可缓存?我想我需要在关联员工和细节上面提到@cache。但这不起作用?当开发人员执行department.getEmployees()时,hibernate将在内部触发查询,即selec

java - 当 JMX 客户端连接时,启用 JMX 的 Java 应用程序似乎打开了一个随机的高阶端口

启用JMX的Java应用程序似乎在JMX客户端连接时打开一个随机高阶端口我已经成功配置了一个启用了helloworldJMX的程序,我可以使用jconsoleJMX客户端从远程位置连接到它。当我尝试打开iptables时,我注意到客户端登录时会建立一个随机的高阶端口。最终我想在防火墙隔离的网段中监控Java应用程序。能否控制随机端口开放的范围?如果有建议,我会将此问题移至serverfault.com。 最佳答案 从Java7u25开始,可以使用系统属性更改RMI端口:-Dcom.sun.management.jmxremote.r

java - 使用 Java Web Start/JNLP 启用 JVM 选项

我正在创建一个WebStart应用程序,它将受益于一些较新的JVM选项(尤其是逃逸分析、G1垃圾收集器等)同时,我希望应用程序能够在不支持这些选项的旧JVM上正常运行。是否有实现此目标的好方法? 最佳答案 作为Thorbjørn提到,Java6u10允许在JNLP中使用多个j2se元素。JNLPFileSyntaxresources最新的JavaWebStart开发人员指南部分,指出多个j2se元素,每个元素都具有java-vm-args属性,可以用最优先出现的。例如: 关于java-使

java - 如何使用 Gradle 启用 Java 12 预览功能?

当我尝试构建具有switchexpressions的Java代码时使用Gradle,它会抛出此错误:error:switchexpressionsareapreviewfeatureandaredisabledbydefault.我尝试运行./gradlewbuild--enable-preview也没有用。我正在使用Gradle5.3.1。 最佳答案 您需要配置JavaCompile任务,以便Gradle在编译时将此选项传递给Java编译器。像这样的东西应该可以工作:tasks.withType(JavaCompile).each

java - 是否可以通过编程方式启用远程 jmx 监控?

我需要以编程方式启动一个新的java进程并动态设置JMX端口。所以不要这样做-Djava.rmi.server.hostname=127.0.0.1-Dcom.sun.management.jmxremote.port=9995-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false我想做以下事情System.setProperty("java.rmi.server.hostname","127.0.0.1");System.setProperty("com.sun